/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pe.edu.unmsm.SIASS.Bean;

import Pe.edu.unmsm.SIASS.DAO.AlumnoDAO;
import Pe.edu.unmsm.SIASS.DAO.AsistenciaDAO;
import Pe.edu.unmsm.SIASS.DAO.CapituloDAO;
import Pe.edu.unmsm.SIASS.DAO.SesionDAO;
import Pe.edu.unmsm.SIASS.DAOImpl.AlumnoDAOImpl;
import Pe.edu.unmsm.SIASS.DAOImpl.AsistenciaDaoImpl;
import Pe.edu.unmsm.SIASS.DAOImpl.CapituloDAOImpl;
import Pe.edu.unmsm.SIASS.DAOImpl.SesionDAOImpl;
import Pe.edu.unmsm.SIASS.Dominio.Alumno;
import Pe.edu.unmsm.SIASS.Dominio.Asistencia;
import Pe.edu.unmsm.SIASS.Dominio.Capitulo;
import Pe.edu.unmsm.SIASS.Dominio.Estado;
import Pe.edu.unmsm.SIASS.Dominio.HorarioGrupo;
import Pe.edu.unmsm.SIASS.Dominio.Sesion;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;

/**
 *
 * @author PC-14
 */
@ManagedBean(name = "asistenciaBean")
@ViewScoped
public class AsistenciaBean implements Serializable {

    public List<Alumno> listaAlum;
    public List<Capitulo> listaCapitulo;
    public List<Sesion> listaSesion;
    AlumnoDAO alumnoDAO;
    CapituloDAO capituloDAO;
    SesionDAO sesionDAO;
    HorarioGrupo horarioGrupo;
    int estadAlum=0;
    int numCap;
    int numSesion;

    public AsistenciaBean() {
        FacesContext context = FacesContext.getCurrentInstance();
        Application appli = context.getApplication();
        horarioGrupo = (HorarioGrupo) appli.evaluateExpressionGet(context, "#{menuBean.horarGrupSelec}", HorarioGrupo.class);
        cargarDatos();
    }

    public void cargarDatos() {
        alumnoDAO = new AlumnoDAOImpl();
        capituloDAO = new CapituloDAOImpl();

        listaAlum = alumnoDAO.listarAlumnosXGrupo(horarioGrupo.getGrupo().getIdGrupo());
        listaCapitulo = capituloDAO.listaCapitulo(horarioGrupo.getGrupo().getCursoPeriodo().getCurso().getIdCurso());
    }

    public void buscarSesiones() {
        System.out.println("entra a buscar sesiones");
        sesionDAO = new SesionDAOImpl();
        listaSesion = sesionDAO.listaSesionCap(numCap);
        System.out.println("size lista ses:" + listaSesion.size());
    }

    public void grabarAsistencia() {
        AsistenciaDAO asistenciaDAO = new AsistenciaDaoImpl();
        Date dia = new Date();
        Date hora = new Date();
        for (Alumno a : listaAlum) {
            asistenciaDAO.guardarAsistencia(horarioGrupo.getIdHorGrupo(), numSesion, dia, hora, 1, a.getIdalumno());
        }
    }
    
     public void aaa() {
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Asistencia modificada", null));
    }

    public void grabarAsistenciaAl(Alumno a, int numS) {
        AsistenciaDAO asistenciaDAO = new AsistenciaDaoImpl();
        Date dia = new Date();
        Date hora = new Date();
        Asistencia asist = asistenciaDAO.obtenerAsistencia(horarioGrupo.getIdHorGrupo(), numS, a.getIdalumno());
        if (asist == null) {
            System.out.println("reghistrannndo");
            asistenciaDAO.guardarAsistencia(horarioGrupo.getIdHorGrupo(), numS, dia, hora, estadAlum, a.getIdalumno());
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Asistencia registrada", null));
        } else {
            System.out.println("modificandop");
            Estado estad = new Estado();
            estad.setIdEstado(estadAlum);
            asist.setEstado(estad);
            asistenciaDAO.modificarAsistencia(asist);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Asistencia modificada", null));
        }
    }

    public List<Alumno> getListaAlum() {
        return listaAlum;
    }

    public void setListaAlum(List<Alumno> listaAlum) {
        this.listaAlum = listaAlum;
    }

    public List<Capitulo> getListaCapitulo() {
        return listaCapitulo;
    }

    public void setListaCapitulo(List<Capitulo> listaCapitulo) {
        this.listaCapitulo = listaCapitulo;
    }

    public List<Sesion> getListaSesion() {
        return listaSesion;
    }

    public void setListaSesion(List<Sesion> listaSesion) {
        this.listaSesion = listaSesion;
    }

    public int getNumCap() {
        return numCap;
    }

    public void setNumCap(int numCap) {
        this.numCap = numCap;
    }

    public int getNumSesion() {
        return numSesion;
    }

    public void setNumSesion(int numSesion) {
        this.numSesion = numSesion;
    }

    public int getEstadAlum() {
        return estadAlum;
    }

    public void setEstadAlum(int estadAlum) {
        this.estadAlum = estadAlum;
    }
}
